﻿using Volo.Abp.Identity;
using Volo.Abp.Reflection;

namespace Acme.BookStore2.Permissions
{
    public static class BookStore2Permissions
    {
        public const string GroupName = "BookStore2";

        //Add your own permission names. Example:
        //public const string MyPermission1 = GroupName + ".MyPermission1";

        public static class OrganizationUnits
        {
            public const string Default = IdentityPermissions.GroupName + ".OrganizationUnits";
            public const string ManageOU = Default + ".ManageOU";
            public const string ManageMembers = Default + ".ManageMembers";
            public const string ManageRoles = Default + ".ManageRoles";
        }

        public static class ClaimTypes
        {
            public const string Default = IdentityPermissions.GroupName + ".ClaimTypes";
            public const string Create = Default + ".Create";
            public const string Update = Default + ".Update";
            public const string Delete = Default + ".Delete";
        }


        public static class SecurityLog
        {
            public const string Default = IdentityPermissions.GroupName + ".SecurityLogs";
            public const string List = Default + ".List";
        }

        public static class AuditLogging
        {
            public const string Default = "AbpAuditLogging.Default";
        }

        public static class Vehicle
        {
            public const string Default = GroupName + "Vehicle";
            public const string Create = Default + ".Create";
            public const string Update = Default + ".Update";
            public const string Delete = Default + ".Delete";
            public const string Maintenance = Default + ".Maintenance";
            public const string Export = Default + ".Export";
            public const string Import = Default + ".Import";
        }

        public static class VehicleInspectionRecord
        {
            public const string Default = GroupName + "VehicleInspectionRecord";
            public const string Create = Default + ".Create";
            public const string Update = Default + ".Update";
            public const string Delete = Default + ".Delete";
            public const string Export = Default + ".Export";
            public const string Import = Default + ".Import";
        }

        public static class VehicleRepairRecord
        {
            public const string Default = GroupName + "VehicleRepairRecord";
            public const string Create = Default + ".Create";
            public const string Update = Default + ".Update";
            public const string Delete = Default + ".Delete";
            public const string Export = Default + ".Export";
            public const string Import = Default + ".Import";
        }

        public static class VehicleDriveRecord
        {
            public const string Default = GroupName + "VehicleDriveRecord";
            public const string Create = Default + ".Create";
            public const string Update = Default + ".Update";
            public const string Delete = Default + ".Delete";
            public const string Export = Default + ".Export";
            public const string Import = Default + ".Import";
        }

        public static class VehicleMaintenanceRecord
        {
            public const string Default = GroupName + "VehicleMaintenanceRecord";
            public const string Create = Default + ".Create";
            public const string Update = Default + ".Update";
            public const string Delete = Default + ".Delete";
            public const string Export = Default + ".Export";
            public const string Import = Default + ".Import";
        }

        public static class WorkSchedule
        {
            public const string Default = GroupName + "WorkSchedule";
            public const string Create = Default + ".Create";
            public const string Update = Default + ".Update";
            public const string Delete = Default + ".Delete";
            public const string Export = Default + ".Export";
            public const string Import = Default + ".Import";
        }
        
        public static class WorkScheduleItem
        {
            public const string Default = GroupName + "WorkScheduleItem";
            public const string Create = Default + ".Create";
            public const string Update = Default + ".Update";
            public const string Delete = Default + ".Delete";
        }

        public static class QuestionAndAnswerPost
        {
            public const string Default = GroupName + ".QuestionAndAnswerPost";
            public const string Delete = Default + ".Delete";
            public const string Update = Default + ".Update";
            public const string Create = Default + ".Create";
        }
        
        public static string[] GetAll()
        {
            return ReflectionHelper.GetPublicConstantsRecursively(typeof(BookStore2Permissions));
        }
    }
}